///////////////////////////////////////////////////////////
//  DataFactory.cpp
//  Implementation of the Class DataFactory
//  Created on:      22-Aug-2013 11:59:24 PM
//  Original author: Jakkaphan Aiemcharoenjit
///////////////////////////////////////////////////////////

#include "..\Interfaces\DataFactory.h"
#include "Item.h"
#include "Header.h"
#include "Pages.h"
#include "Page.h"
//#include "expat.h"
#include <stdio.h>

using namespace Data;

//static void XMLCALL
//  startElement(void *userData, const char *name, const char **atts)
//{
//  int i;
//  int *depthPtr = (int *)userData;
//  for (i = 0; i < *depthPtr; i++)
//    putchar('\t');
//  puts(name);
//  *depthPtr += 1;
//}
//
//static void XMLCALL
//  endElement(void *userData, const char *name)
//{
//  int *depthPtr = (int *)userData;
//  *depthPtr -= 1;
//}

DataFactory::DataFactory()
{
//  char buf[BUFSIZ];
//  XML_Parser parser = XML_ParserCreate(NULL);
//  int done;
//  int depth = 0;
//  XML_SetUserData(parser, &depth);
//  XML_SetElementHandler(parser, startElement, endElement);
//  do {
//    size_t len = fread(buf, 1, sizeof(buf), stdin);
//    done = len < sizeof(buf);
//    if (XML_Parse(parser, buf, len, done) == XML_STATUS_ERROR) {
//      fprintf(stderr,
//        "%s at line %d\n",
//        XML_ErrorString(XML_GetErrorCode(parser)),
//        XML_GetCurrentLineNumber(parser));
////      return 1;
//    }
//  } while (!done);
//  XML_ParserFree(parser);
}



DataFactory::~DataFactory()
{

}


IItem* DataFactory::CreateItem(const String_t& name, IData::DataType _type)
{
  IItem* item = new Item(name, _type);
	return item;
}


IHeader* DataFactory::CreateHeader(const String_t& name)
{
  IHeader* header = new Header(name);
	return header;
}


IPage* DataFactory::CreatePage(IPage::PageType _type)
{
  IPage* page = new Page(_type);
	return  page;
}


IPages* DataFactory::CreatePages()
{
  IPages* pages = new Pages();
	return  pages;
}
